package com.joker.demo.admin.service;

import com.joker.demo.admin.domain.po.JobInfoPO;
import com.joker.demo.admin.domain.dto.JobInfoQueryDTO;
import com.joker.demo.admin.domain.vo.JobInfoVO;
import com.joker.demo.admin.domain.vo.PageResult;

import java.util.List;

/**
 * 任务信息服务接口
 *
 * @author : feixiang.li
 * @since : 2025-07-25 17:53
 */
public interface JobInfoService {

    /**
     * 查询任务列表
     *
     * @param jobInfoQueryDTO 查询参数
     * @return 任务列表
     */
    List<JobInfoPO> queryJobInfo(JobInfoQueryDTO jobInfoQueryDTO);

    /**
     * 分页查询任务信息
     *
     * @param jobInfoQueryDTO 查询参数
     * @return 分页结果
     */
    PageResult<JobInfoVO> queryJobInfoPage(JobInfoQueryDTO jobInfoQueryDTO);

    /**
     * 根据任务ID获取任务详情
     *
     * @param jobId 任务ID
     * @return 任务详情
     */
    JobInfoVO getJobInfoDetail(Integer jobId);

    /**
     * 手动触发任务
     *
     * @param jobId 任务ID
     * @return 是否成功
     */
    boolean triggerJob(Integer jobId);


    /**
     * 处理单个任务组下的任务
     *
     * @param jobInfo 任务信息
     */
    void handleSingleJobInfo(JobInfoPO jobInfo, boolean isManualTrigger);


    /**
     * 处理多个任务组下的任务
     *
     * @param jobInfoList 任务信息
     */
    void handleMultipleJobInfo(List<JobInfoPO> jobInfoList, boolean isManualTrigger);

}
